Skip to content

Comments

feat: new scenario ПроверкаДублейУникальныхИдентификаторов#53

Open
Kirill wants to merge 1 commit intobia-technologies:developfrom
Kirill:feature-02
Open

feat: new scenario ПроверкаДублейУникальныхИдентификаторов#53
Kirill wants to merge 1 commit intobia-technologies:developfrom
Kirill:feature-02

Conversation

@Kirill
Copy link

@Kirill Kirill commented Nov 6, 2025

Новый сценарий ПроверкаДублейУникальныхИдентификаторов для проверки
по всей конфигурации одинаковых guid'ов метаданных

Summary by CodeRabbit

  • New Features

    • Добавлена служба для проверки дублей уникальных идентификаторов в метаданных; сценарий обрабатывает файлы метаданных и сигнализирует об обнаруженных дубликатах.
  • Tests

    • Добавлены тесты покрытия: успешная обработка, обнаружение и выброс при дублировании UUID, поведение для несуществующих и не‑метаданных файлов.
  • Chores

    • Добавлены наборы фикстур с различными метаданными для сценариев проверки.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Nov 6, 2025

Walkthrough

Добавлен новый сценарий проверки дублей UUID в метаданных конфигурации с двумя экспортными точками: имя сценария и обработка файла; реализована логика извлечения UUID, сканирования дескрипторов и выброса исключения при нахождении дубликатов. Добавлены тесты и фикstуры для XML/EDT.

Changes

Когорта / Файл(ы) Описание изменений
Основной модуль сценария
src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
Новый модуль. Экспорт функций ИмяСценария() и ОбработатьФайл(...). Реализует: извлечение UUID из файла, сбор дескрипторов конфигурации, поиск дубликатов через сравнение UUID, логирование и выброс исключения при конфликте.
Тесты
tests/ТестПроверкаСценариевОбработки.os
Добавлены четыре экспортные тест-процедуры для проверки корректной обработки, обработки ошибок при дублях, пропуска несуществующих файлов и игнорирования неметаданных; включает подготовку окружения, копирование фикстур и очистку.
Фикстуры — Configurator (XML)
tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/*/*.xml, tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/*/*.xml
Добавлены наборы XML-файлов метаданных (несколько каталогов), содержащие уникальные и дублирующие UUID для тестирования детекции.
Фикстуры — EDT (MDO)
tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/*/*.mdo, tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/*/*.mdo
Добавлены MDO-файлы в формате EDT с теми же сценариями (уникальные и дублирующие UUID) для валидации обработки разных форматов.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor Caller
    participant Handler as Обработчик файла
    participant Extractor as Экстрактор UUID
    participant Scanner as Сканер дескрипторов
    participant Comparator as Поиск дубликатов
    participant Logger as Логгер

    Caller->>Handler: ОбработатьФайл(АнализируемыйФайл...)
    Handler->>Handler: Проверить, является ли файл метаданными
    alt Не метаданные
        Handler-->>Caller: false
    else Метаданные
        Handler->>Extractor: ИдентификаторыПроверяемогоФайла(файл)
        Extractor->>Extractor: Применить UUID regex
        Extractor-->>Handler: Список UUID
        alt Список пуст
            Handler-->>Caller: true
        else Есть UUID
            Handler->>Scanner: ФайлыОписанияМетаданных(каталог)
            Scanner-->>Handler: Список дескрипторов
            loop По каждому дескриптору
                alt Текущий файл — пропустить
                    Handler->>Handler: пропуск
                else Проверка в другом дескрипторе
                    Handler->>Comparator: НайтиДубликаты(дескриптор, UUID)
                    Comparator->>Comparator: Поиск совпадений
                    alt Совпадение найдено
                        Comparator-->>Handler: UUID совпадает
                        Handler->>Logger: LogError(сообщение)
                        Logger-->>Logger: Запись
                        Handler->>Handler: Выброс исключения
                        Handler-->>Caller: Exception
                    else Нет совпадений
                        Comparator-->>Handler: неопределено
                    end
                end
            end
            Handler-->>Caller: true
        end
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 Я — заяц, прыгаю по UUID-следам,
Ищу дубли в файлах, след оставляя там.
Если встретится двойник — я громко крикну: «Стоп!»
В лог запишу, исключенье брошу в ответ — тюк-тюк-топ.
Пусть тесты бегут, порядок в метаданных живёт впрок.

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Название четко описывает основное изменение — добавление нового сценария ПроверкаДублейУникальныхИдентификаторов для проверки дублей уникальных идентификаторов в конфигурации.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b1e4489 and ed02e16.

📒 Files selected for processing (1)
  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-03T09:51:07.133Z
Learnt from: Kyrales
Repo: bia-technologies/precommit4onec PR: 48
File: src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os:0-0
Timestamp: 2025-11-03T09:51:07.133Z
Learning: В функции СинхронизироватьМетаданныеИФайлыПВХ в файле src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os массив МассивОшибокПриПоискеФайловОбъектов намеренно игнорируется, так как эти ошибки актуальны только для функции СинхронизироватьМетаданныеИФайлы(), но не для обработки планов видов характеристик (ПВХ).

Applied to files:

  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
🔇 Additional comments (4)
src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (4)

1-20: Хорошая структура модуля.

Заголовок и функция ИмяСценария() реализованы корректно в соответствии с паттернами проекта.


22-53: LGTM!

Функция ОбработатьФайл() корректно реализует точку входа для обработки файлов метаданных.


55-87: Корректная реализация основной логики проверки.

Процедура правильно обрабатывает раннее завершение при отсутствии идентификаторов, корректно исключает проверяемый файл из сравнения и адекватно выбрасывает исключение при обнаружении дубликатов.


119-134: LGTM!

Функция ФайлыОписанияМетаданных() корректно собирает файлы описания метаданных с учетом типа формата (EDT/не-EDT) и дополнительной валидацией.

@theshadowco
Copy link

Очень спорный сценарий:

  • для EDT формата: при изменении одного mdo перелопатим все на предмет совпадения UID. Для больших конфигураций будет несколько не быстрым данное изменение
  • для формата конфигуратора: при аналогичном изменении анализируются все xml, коих в разы больше, чем mdo, что еще медленнее
  • нужны тесты для проектов с расширениями, т.к. одинаковые идентификаторы в разных расширениях могут быть, что не является проблемой

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
tests/ТестПроверкаСценариевОбработки.os (1)

691-724: Хорошее покрытие базовых сценариев.

Тесты соответствуют шаблону аналогичных тестов для ПроверкаДублейПроцедурИФункций и покрывают основные сценарии:

  • Исключение при обнаружении дублей
  • Успешная обработка файла без дублей
  • Обработка несуществующего файла
  • Пропуск не-MDO файлов

Рекомендация: Как отмечено в комментариях к PR, желательно добавить тесты для проектов с расширениями, поскольку одинаковые идентификаторы в разных расширениях могут быть допустимы.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ed02e16 and ecde50c.

📒 Files selected for processing (5)
  • README.md
  • docs/ПроверкаДублейУникальныхИдентификаторов.md
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/ДокументБезДублей.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/ДокументСДублями.mdo
  • tests/ТестПроверкаСценариевОбработки.os
✅ Files skipped from review due to trivial changes (1)
  • docs/ПроверкаДублейУникальныхИдентификаторов.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-03T09:51:07.133Z
Learnt from: Kyrales
Repo: bia-technologies/precommit4onec PR: 48
File: src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os:0-0
Timestamp: 2025-11-03T09:51:07.133Z
Learning: В функции СинхронизироватьМетаданныеИФайлыПВХ в файле src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os массив МассивОшибокПриПоискеФайловОбъектов намеренно игнорируется, так как эти ошибки актуальны только для функции СинхронизироватьМетаданныеИФайлы(), но не для обработки планов видов характеристик (ПВХ).

Applied to files:

  • tests/ТестПроверкаСценариевОбработки.os
🔇 Additional comments (6)
README.md (1)

48-48: LGTM!

Документация обновлена корректно. Новый сценарий добавлен в алфавитном порядке, формат соответствует остальным записям списка.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/ДокументСДублями.mdo (1)

1-79: LGTM!

Тестовая фикстура корректно демонстрирует сценарий дублирования UUID: документ (строка 3) и его реквизит (строка 35) имеют одинаковый идентификатор 12345678-1234-1234-1234-123456789012. Это именно то, что нужно для тестирования обнаружения дублей.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/ДокументБезДублей.mdo (1)

1-79: LGTM!

Тестовая фикстура корректно демонстрирует сценарий без дублей: документ (строка 3) и реквизит (строка 35) имеют разные UUID. Это подходящие тестовые данные для проверки положительного сценария.

Примечание: UUID документа (12345678-1234-1234-1234-123456789012) совпадает с UUID из файла ДокументСДублями.mdo. Если планируется проверка дублей между файлами (как упоминалось в комментариях к PR о производительности), возможно, стоит добавить отдельные тесты для этого сценария.

tests/ТестПроверкаСценариевОбработки.os (3)

21-47: Уточните, закомментированы ли тесты намеренно.

Большой блок тестов закомментирован. Если это временное изменение для отладки, рекомендуется раскомментировать тесты перед мержем, чтобы обеспечить регрессионное тестирование всех сценариев.


109-112: LGTM!

Процедура СортировкаСостава_EventSubscriptions соответствует шаблону других аналогичных процедур. Обратите внимание, что вызов этого теста закомментирован в ПолучитьСписокТестов (строка 27).


48-51: LGTM!

Новые тесты корректно зарегистрированы в массиве ВсеТесты. Именование соответствует соглашениям проекта.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (3)
src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (3)

97-98: Исправьте опечатку в названии функции.

Функция вызывается с опечаткой: ТекстРегулярногоВыряжения должно быть ТекстРегулярногоВыражения.


143-149: Исправьте формирование строки поиска UUID.

В строке 145 формируется строка поиска без закрывающей кавычки: uuid="%1 вместо uuid="%1". Хотя поиск подстроки может работать, это снижает точность и может привести к ложным срабатываниям.

🔎 Предлагаемое исправление
-		ТекстУИД = СтрШаблон("uuid=""%1", УИД);
+		ТекстУИД = СтрШаблон("uuid=""%1""", УИД);

155-157: Исправьте опечатку в названии функции.

Название функции ТекстРегулярногоВыряжения содержит опечатку. Должно быть ТекстРегулярногоВыражения.

🔎 Предлагаемое исправление
-Функция ТекстРегулярногоВыряжения()
+Функция ТекстРегулярногоВыражения()
🧹 Nitpick comments (2)
tests/ТестПроверкаСценариевОбработки.os (1)

445-465: Рекомендуется добавить тесты для расширений.

Согласно комментариям в PR от theshadowco, одинаковые идентификаторы в разных расширениях могут быть допустимы. Рекомендуется добавить тесты для проверки поведения сценария при работе с проектами, содержащими расширения.

Также стоит обратить внимание на потенциальные проблемы производительности при больших конфигурациях, упомянутые в PR-комментариях. Рассмотрите добавление теста производительности или оптимизацию алгоритма.

src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (1)

55-87: Рассмотрите оптимизацию для больших конфигураций.

Текущая реализация перебирает все файлы метаданных для каждого проверяемого файла. Для больших конфигураций (тысячи объектов метаданных) это может привести к значительным задержкам, как отмечено в комментариях к PR.

Возможные оптимизации:

  • Кэширование UUID всех файлов метаданных при первом проходе
  • Использование индексированной структуры (Соответствие) для быстрого поиска дублей
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ecde50c and e5dd382.

📒 Files selected for processing (13)
  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник1/Справочник1.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник2/Справочник2.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник3/Справочник3.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник1/Справочник1.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник2/Справочник2.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.mdo
  • tests/ТестПроверкаСценариевОбработки.os
✅ Files skipped from review due to trivial changes (8)
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник1/Справочник1.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник2/Справочник2.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник1/Справочник1.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник2/Справочник2.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник3/Справочник3.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.xml
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-03T09:51:07.133Z
Learnt from: Kyrales
Repo: bia-technologies/precommit4onec PR: 48
File: src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os:0-0
Timestamp: 2025-11-03T09:51:07.133Z
Learning: В функции СинхронизироватьМетаданныеИФайлыПВХ в файле src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os массив МассивОшибокПриПоискеФайловОбъектов намеренно игнорируется, так как эти ошибки актуальны только для функции СинхронизироватьМетаданныеИФайлы(), но не для обработки планов видов характеристик (ПВХ).

Applied to files:

  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
  • tests/ТестПроверкаСценариевОбработки.os
🔇 Additional comments (8)
tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.xml (1)

1-15: LGTM!

Тестовая фикстура корректно структурирована для проверки обнаружения дублей UUID. UUID 11111111-1111-1111-1111-111111111111 намеренно совпадает с другим файлом для тестирования сценария.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.xml (1)

1-15: LGTM!

Фикстура корректно настроена как "оригинальный" файл с UUID 11111111-1111-1111-1111-111111111111, который дублируется в другом файле для тестирования.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.mdo (1)

1-9: LGTM!

Фикстура EDT-формата корректно настроена с уникальным UUID cccccccc-cccc-cccc-cccc-cccccccccccc для позитивного тестирования.

tests/ТестПроверкаСценариевОбработки.os (3)

52-55: LGTM!

Тесты добавлены в список корректно и следуют существующим соглашениям.


350-401: LGTM!

Тест корректно проверяет обработку файлов с уникальными UUID в обоих форматах (Configurator и EDT).


403-443: LGTM!

Тест корректно проверяет, что сценарий выбрасывает исключение при обнаружении дублей UUID.

src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (2)

16-20: LGTM!

Функция корректно возвращает имя сценария.


38-53: LGTM!

Функция обработки файла корректно реализована с проверкой существования файла и типа метаданных.

@Kirill
Copy link
Author

Kirill commented Dec 29, 2025

Про спорный сценарий вполне согласен. Для ERP он выполняется около 2-3х минут.
Насчет одинаковых guid в разных расширениях и конфигурации - не может быть. Так как это идентификаторы БД, они должны быть уникальны в пределах всего проекта независимо от расширений и конфигурации. Там есть guid на объект конфигурации, который он расширяет, но он идет с другим тегом extendedConfigurationObject.

Новый сценарий ПроверкаДублейУникальныхИдентификаторов для проверки
 по всей конфигурации одинаковых guid'ов метаданных
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (2)

89-117: Исправьте опечатку в названии функции.

На строке 97 вызывается функция с опечаткой: ТекстРегулярногоВыряжения должно быть ТекстРегулярногоВыражения. Эта проблема уже была отмечена в предыдущих комментариях.

🔎 Предлагаемое исправление
-	ТекстРегулярногоВыражения = ТекстРегулярногоВыражения();
+	ТекстРегулярногоВыражения = ТекстРегулярногоВыражения();

А также исправьте объявление функции на строке 155.


155-157: Исправьте опечатку в названии функции.

Название функции содержит опечатку: ТекстРегулярногоВыряжения должно быть ТекстРегулярногоВыражения. Эта проблема уже была отмечена в предыдущих комментариях.

🔎 Предлагаемое исправление
-Функция ТекстРегулярногоВыряжения()
+Функция ТекстРегулярногоВыражения()

Также обновите вызов этой функции на строке 97.

🧹 Nitpick comments (1)
src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (1)

55-87: Подтверждение проблемы производительности, указанной в PR.

Логика корректна, но для каждого изменённого файла метаданных выполняется проверка всех файлов дескрипторов в конфигурации. Как отмечено в комментариях PR, для больших конфигураций (например, ERP) это занимает 2-3 минуты.

Рассмотрите возможность оптимизации:

  • Кэширование списка всех UUID в конфигурации при первом вызове
  • Использование хэш-таблицы для поиска дубликатов вместо последовательного перебора

Убедитесь, что для больших проектов время выполнения приемлемо для разработчиков.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e5dd382 and bdfc7fc.

📒 Files selected for processing (13)
  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник1/Справочник1.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник2/Справочник2.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник3/Справочник3.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник1/Справочник1.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник2/Справочник2.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.mdo
  • tests/ТестПроверкаСценариевОбработки.os
🚧 Files skipped from review as they are similar to previous changes (7)
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник2/Справочник2.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.xml
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСОригинальнымUUID/СправочникСОригинальнымUUID.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник1/Справочник1.mdo
  • tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Catalogs/Справочник2/Справочник2.mdo
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-11-03T09:51:07.133Z
Learnt from: Kyrales
Repo: bia-technologies/precommit4onec PR: 48
File: src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os:0-0
Timestamp: 2025-11-03T09:51:07.133Z
Learning: В функции СинхронизироватьМетаданныеИФайлыПВХ в файле src/СценарииОбработки/СинхронизацияОбъектовМетаданныхИФайлов.os массив МассивОшибокПриПоискеФайловОбъектов намеренно игнорируется, так как эти ошибки актуальны только для функции СинхронизироватьМетаданныеИФайлы(), но не для обработки планов видов характеристик (ПВХ).

Applied to files:

  • tests/ТестПроверкаСценариевОбработки.os
  • src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os
🔇 Additional comments (12)
tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник1/Справочник1.xml (1)

1-15: LGTM! Тестовая фикстура корректна.

Фикстура содержит валидную структуру XML-метаданных для тестирования сценария проверки дублей UUID. UUID "11111111-1111-1111-1111-111111111111" намеренно упрощён для удобства тестирования.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Catalogs/Справочник3/Справочник3.xml (1)

1-15: LGTM! Тестовая фикстура корректна.

Фикстура содержит валидную структуру XML-метаданных для тестирования сценария. UUID уникален относительно других тестовых фикстур.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/EDT/Дубли/Catalogs/СправочникСУникальнымUUID/СправочникСУникальнымUUID.mdo (1)

1-9: LGTM! Фикстура в формате EDT корректна.

Фикстура содержит валидную структуру метаданных в формате EDT (mdclass:Catalog) для тестирования сценария проверки дублей UUID.

tests/fixtures/ПроверкаДублейУникальныхИдентификаторов/Configurator/Дубли/Catalogs/СправочникСДублем/СправочникСДублем.xml (1)

1-15: LGTM! Фикстура для тестирования дубликатов корректна.

Фикстура содержит намеренно дублирующийся UUID "11111111-1111-1111-1111-111111111111" для проверки корректности обнаружения дубликатов сценарием. Расположение в подкаталоге "Дубли" явно указывает на назначение.

tests/ТестПроверкаСценариевОбработки.os (4)

52-55: LGTM! Регистрация тестов корректна.

Новые тесты для сценария проверки дублей UUID добавлены в список с соблюдением существующих соглашений по именованию.


352-401: LGTM! Тест корректной обработки файлов реализован правильно.

Тест проверяет обработку файлов метаданных с уникальными UUID для форматов XML и EDT. Временные каталоги корректно очищаются после каждой группы проверок.


403-443: LGTM! Тест обнаружения дубликатов реализован корректно.

Тест проверяет, что сценарий выбрасывает исключение при обнаружении дубликатов UUID для обоих форматов (XML и EDT). Временные каталоги корректно очищаются.


445-463: LGTM! Тесты для граничных случаев корректны.

Тесты проверяют, что сценарий корректно возвращает Ложь для несуществующих файлов и файлов, не являющихся метаданными.

src/СценарииОбработки/ПроверкаДублейУникальныхИдентификаторов.os (4)

16-20: LGTM! Функция возвращает корректное имя сценария.


38-53: LGTM! Функция обработки файла реализована корректно.

Функция корректно проверяет существование файла и его тип перед обработкой, возвращая соответствующий результат.


119-134: LGTM! Функция сбора файлов метаданных реализована корректно.

Функция корректно определяет маску файлов в зависимости от формата и фильтрует только валидные дескрипторы метаданных.


136-153: LGTM! Функция поиска дубликатов реализована корректно.

Функция корректно формирует шаблон поиска UUID и возвращает первый найденный дубликат. Шаблон на строке 145 корректен: двойные кавычки правильно экранированы.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants